Bunch: A Clustering Tool for the Recovery and Maintenance of Software System Structures
نویسندگان
چکیده
Software systems are typically modi ed in order to extend or change their functionality, improve their performance, port them to di erent platforms, and so on. For developers, it is crucial to understand the structure of a system before attempting to modify it. The structure of a system, however, may not be apparent to new developers, because the design documentation is non-existent or, worse, inconsistent with the implementation. This problem could be alleviated if developers were somehow able to produce high-level system decomposition descriptions from the low-level structures present in the source code. We have developed a clustering tool called Bunch that creates a system decomposition automatically by treating clustering as an optimization problem. This paper describes the extensions made to Bunch in response to feedback we received from users. The most important extension, in terms of the quality of results and execution e ciency, is a feature that enables the integration of designer knowledge about the system structure into an otherwise fully automatic clustering process. We use a case study to show how our new features simpli ed the task of extracting the subsystem structure of a medium size program, while exposing an interesting design aw in the process.
منابع مشابه
A Heuristic Search Approach to Solving the Software Clustering Problem
A Heuristic Search Approach to Solving the Software Clustering Problem Brian S. Mitchell Spiros Mancoridis Most interesting software systems are large and complex, and as a consequence, understanding their structure is difficult. One of the reasons for this complexity is that source code contains many entities (e.g., classes, modules) that depend on each other in intricate ways (e.g., procedure...
متن کاملClustering Module Dependency Graphs of Software Systems Using the Bunch Tool
In this demonstration we will show how our tool (Bunch), along with other tools for source code analysis and graph visualization, can be used to recover the high-level structure of a software system directly from its source code. We accomplish this task by first using a source code analysis system (e.g., CIA, Acacia) to produce a module dependency graph that represents the system modules and mo...
متن کاملAn Architecture for Distributing the Computation of Software Clustering Algorithms
Collections of general purpose networked workstations offer processing capability that often rivals or exceeds supercomputers. Since networked workstations are readily available in most organizations, they provide an economic and scalable alternative to parallel machines. In this paper we discuss how individual nodes in a computer network can be used as a collection of connected processing elem...
متن کاملSpectral and meta-heuristic algorithms for software clustering
When large software systems are reverse engineered, one of the views that is produced is the system decomposition hierarchy. This hierarchy shows the system’s subsystems, the contents of the subsystems (i.e., modules or other subsystems), and so on. Software clustering tools create the system decomposition automatically or semi-automatically with the aid of the software engineer. The Bunch soft...
متن کاملMaintenance and Work-rest Scheduling in Human-machine System According to Fatigue and Reliability
Most manufacturers use human-machine systems to produce high-quality products. Dealing with human-machine systems is very complicated since not only machines should be utilized in proper condition but also appropriate environment should be provided for human resources. Most manufacturers have a maintenance plan for machines but many of them do not have a proper work-rest schedule for human reso...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1999